package com.qf.BaseController;

import com.qf.pojo.Cart;
import com.qf.pojo.User;
import com.qf.service.CartService;
import com.qf.service.impl.CartServiceImpl;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author Wy
 * @version V1.0
 * @Project javaWeb项目
 * @Package com.qf.BaseController
 * @Description:
 * @Date 2022/5/25 19:06
 */
@WebServlet("/cart")
public class CartController  extends  BaseServlet{
    /**
     * 创建购物车
     * @return
     */
    public String create(HttpServletRequest request, HttpServletResponse response) {

        //1. 获取商品id
        String pid = request.getParameter("pid");

        //2. 获取session会话中当前用户的用户id
        User user = (User)request.getSession().getAttribute("loginUser");
        if (user == null) {
            //如果获取不到用户对象, 说明用户没有登录, 跳转到登录页面
            return "redirect:/login.jsp";
        }

        //3. 调用service业务层, 将购物车存入到数据库中
        CartService cartService = new CartServiceImpl();
        cartService.createCart(user.getId(), Integer.parseInt(pid));

        //4. 跳转到购物车查询列表方法
        return "redirect:/cart?method=show";
    }

    /**
     * 查询指定用户的购物车数据, 并跳转到购物车列表页面展示
     * @return
     */
    public String show(HttpServletRequest request, HttpServletResponse response) {
        //1. 获取session会话中当前用户的id
        User user = (User)request.getSession().getAttribute("loginUser");
        if (user == null) {
            //用户未登录, 从新登录
            return "redirect:/login.jsp";
        }

        //2. 根据用户id调用service查询这个用户的购物车数据
        CartService cartService = new CartServiceImpl();
        List<Cart> cartList = cartService.findCartListByUid(user.getId());

        //3. 将用户购物车的数据放入request域中, 带到页面中进行展示
        request.setAttribute("list", cartList);

        //4. 跳转到购物车列表页面展示
        return "forward:/cart.jsp";
    }

     public  String update(HttpServletRequest request, HttpServletResponse response){
        User loginUser = (User) request.getSession().getAttribute("loginUser");
        if(loginUser==null){
            return  "redirect:/login.jsp";
        }
         //2. 获取购物项主键id参数
         String cid = request.getParameter("cid");
         //获取购买数量
         String cnum = request.getParameter("cnum");
         //3. 调用service, 执行修改业务
         CartServiceImpl cartService = new CartServiceImpl();
         cartService.updateCart(Integer.parseInt(cid),Integer.parseInt(cnum));


         return  "redirect:/cart?method=show";
     }
     public  String delete(HttpServletRequest request, HttpServletResponse response){
         User loginUser = (User) request.getSession().getAttribute("loginUser");

         if(loginUser==null){

             return  "redirect:/login.jsp";
         }
         //2. 获取购物项主键id
         String cid = request.getParameter("cid");
         //3. 调用service根据购物项主键id删除
         CartServiceImpl cartService = new CartServiceImpl();
         cartService.deleteById(Integer.parseInt(cid));

    //4. 跳转到购物车查询列表页面, 显示最新购物项数据
         return  "redirect:/cart?method=show";
     }

}
